package com.wing.enterprise.feign;

import com.wing.common.utils.JsonResult;
import com.wing.common.utils.PageResult;
import com.wing.enterprise.device.entity.Device;
import com.wing.enterprise.device.request.DeviceForm;
import com.wing.enterprise.device.response.DeviceVO;
import com.wing.enterprise.device.response.ProcessDeviceVO;
import com.wing.enterprise.invoicing.model.entity.TransportCompany;
import com.wing.enterprise.order.model.ScanDeliveryVo;
import com.wing.enterprise.product.model.entity.*;
import com.wing.enterprise.product.model.request.*;
import com.wing.enterprise.product.model.response.*;
import com.wing.enterprise.res.ReceiptRecord;
import com.wing.enterprise.res.ReceiptRecordDetail;
import com.wing.enterprise.sell.model.entity.Order;
import com.wing.enterprise.sell.model.response.OrderVO;
import com.wing.enterprise.storage.model.PalletBoxSkuItermForm;
import com.wing.enterprise.system.SystemOfficialInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.util.List;
import java.util.Map;

@Component
public class EnterpriseClientFallback implements EnterpriseClient {

    @Autowired
    private EnterpriseClient enterpriseClient;

    @Override
    public JsonResult<ProductDetailVO> getProductDetailBySkuCode(String skuCode) {
        return null;
    }

    @Override
    public JsonResult<ProductDetailVO> getProductInfoBySkuCode(String skuCode) {
        return null;
    }

    @Override
    public JsonResult<ProductUnitVO> getProductUnitById(Long productUnitId) {
        return null;
    }

    @Override
    public JsonResult<ProductPackVO> getProductPackById(Long packId) {
        return null;
    }

    @Override
    public JsonResult<ProductPackLabelVO> getProductPackLabelById(Long packLabelId) {
        return null;
    }

    @Override
    public JsonResult<ProductPackLabelVO> getProductPackLabelVOList(String code, Integer type) {
        return null;
    }

    @Override
    public PageResult<CabInventoryProduct> getInventoryProductList(String secret, Integer page, Integer limit, String sort, String order) {
        return null;
    }

    @Override
    public PageResult<ProductPackLabelVO> getInventoryPackLabelPageList(String secret, Integer page, Integer limit, String sort, String order, Long productTypeId) {
        return null;
    }

    @Override
    public JsonResult<String> getBarCode(String code) {
        return null;
    }

    @Override
    public JsonResult<ProductPackLabelVO> getPackLabelVOByCode(String labelCode, Long loadPlanId) {
        return null;
    }

    @Override
    public JsonResult<ProductPackLabelVO> getLabelByCode(String labelCode) {
        return null;
    }

    @Override
    public JsonResult updateProductPackLabel(ProductPackLabelVO ProductPackLabelVO) {
        return null;
    }

    @Override
    public JsonResult extractPackLabel(String code, Integer extract, Integer addCount) {
        return null;
    }

    @Override
    public JsonResult<ProductPackLabelForm> extractPackLabel2(String code, Integer extract, Integer addCount, Long boxId, Long warehouseId, Long areaId, Long shelfId, Long spaceId) {
        return null;
    }

    @Override
    public JsonResult<ProductPackLabelForm> extractPackLabel4InventoryOut(String code, Integer extract, Integer addCount) {
        return null;
    }


    @Override
    public JsonResult<ProductVO> getProductById(Long productId) {
        return null;
    }

    @Override
    public JsonResult<ProductTypeVO> getProductTypeVoById(Long productTypeId) {
        return null;
    }

    @Override
    public PageResult<ProductDetailVO> getProductDetailPageList() {
        return null;
    }

    @Override
    public JsonResult getProductTypeVOAll() {
        return null;
    }

    @Override
    public JsonResult getProductCategory() {
        return null;
    }

    @Override
    public JsonResult addProductPackLabelOut(ProductPackLabelOut productPackLabelOut) {
        return null;
    }

    @Override
    public JsonResult<List<Device>> getDeviceAll() {
        return null;
    }

    @Override
    public PageResult<Device> getDevicePageList(Integer page, Integer limit, String sort, String order, String name, String deviceCode) {
        return null;
    }

    @Override
    public JsonResult addDevice(DeviceForm deviceForm) {
        return null;
    }

    @Override
    public JsonResult<List<ProcessDeviceVO>> deviceVOListByProcessId(Long processId) {
        return null;
    }

    @Override
    public JsonResult<DeviceVO> getDeviceById(Long id) {
        return null;
    }

    @Override
    public JsonResult getProductDetailAll() {
        return null;
    }

    @Override
    public JsonResult getProductUnitAll() {
        return null;
    }

    @Override
    public JsonResult getProductPackAll() {
        return null;
    }

    @Override
    public PageResult<ProductDetailVO> getInventoryProductDetailPageList(Integer page, Integer limit,String skuName,String skuCode
            ,Long productCategoryId,Long id,Integer type) {
        return null;
    }

    @Override
    public PageResult<ProductDetailVO> getProductPageList(Integer page, Integer limit, String skuCode, String productCategoryIds) {
        return null;
    }


    @Override
    public JsonResult upById(Long id, Integer num) {
        return null;
    }

    @Override
    public JsonResult getTransportCompanyAll() {
        return null;
    }

    @Override
    public JsonResult<TransportCompany> getTransportCompanyById(Long id) {
        return null;
    }

    @Override
    public JsonResult getCompanyInfo(String companyId) {
        return null;
    }

    @Override
    public JsonResult addProductPackLabelDetail(ProductPackLabelDetailForm productPackLabelDetailForm) {
        return null;
    }

    @Override
    public JsonResult getPackLabelDetaiListByJobId(Long jobId) {
        return null;
    }

    @Override
    public JsonResult syncProductAndDetailBatch(List<List<Map<String, Object>>> list) {
        return null;
    }

    @Override
    public JsonResult syncProductAndDetail(List<Map<String, Object>> list) {
        return null;
    }

    @Override
    public JsonResult getLabelCode(String packLabelCode) {
        return null;
    }

    @Override
    public JsonResult getSysEnterprise(Long id) {
        return null;
    }

    @Override
    public JsonResult getProvinceList() {
        return null;
    }

    @Override
    public JsonResult getCityList(Integer parentId) {
        return null;
    }

    @Override
    public JsonResult getAreaList(Integer parentId) {
        return null;
    }

    @Override
    public ProductBrandVO getProductBrandById(Long id) {
        return null;
    }

    @Override
    public JsonResult<List<Product>> getProductByCode(String productCode) {
        return null;
    }

    @Override
    public JsonResult<List<ProductDetail>> getProductDetailByCompanyIdAndSkuCode(Long settledCompanyId, String skuCode) {
        return null;
    }

    @Override
    public JsonResult<List<ProductDetail>> getProductDetailByBarcode(Long settledCompanyId, String barcode) {
        return null;
    }

    @Override
    public JsonResult<List<ProductDetail>> getProductDetailBySkuSpecValue(Long productId, String skuSpecValue) {
        return null;
    }

    @Override
    public JsonResult<List<ProductPackLabel>> getByPurchaseId(Long purchaseId, String skuCode) {
        return null;
    }

    @Override
    public JsonResult InventoryDelete(Long cabInventoryProductId) {
        return null;
    }

    @Override
    public JsonResult addProductDetail(ProductDetailForm productDetailForm) {
        return null;
    }

    @Override
    public JsonResult<CabInventoryProduct> getCabInventoryProductVOBySkuCode(String skuCode) {
        return null;
    }

    @Override
    public JsonResult<CabInventoryProduct> getCabInventoryProductVOBySkuCode2(String skuCode, Long warehouseId,Integer sourceType) {
        return null;
    }

    @Override
    public JsonResult addCabInventoryProduct(CabInventoryProductForm cabInventoryProductForm) {
        return null;
    }

    @Override
    public JsonResult updateCabInventoryProduct(CabInventoryProduct cabInventoryProduct) {
        return null;
    }

    @Override
    public JsonResult addCabInventoryProductRecord(CabInventoryProductRecord cabInventoryProductRecord) {
        return null;
    }

    @Override
    public JsonResult updateProductDetail(String skuCode) {
        return null;
    }

    @Override
    public JsonResult addProductPackLabel(ProductPackLabelForm productPackLabelForm) {
        return null;
    }

    @Override
    public JsonResult addProductPackLabelNew(ProductPackLabelForm productPackLabelForm) {
        return null;
    }

    @Override
    public JsonResult saveSign(ScanDeliveryVo scanDeliveryVo) {
        return null;
    }

    @Override
    public JsonResult inventoryDeleteBySkuId(Long skuId) {
        return null;
    }

    @Override
    public PageResult<ProcessInfoVO> getProcessInfoPageList(Integer page, Integer limit, String sort, String order, Long productTypeId,String code,String name) {
        return null;
    }

    @Override
    public JsonResult addProcessInfo(ProcessInfoForm processInfoForm) {
        return null;
    }

    @Override
    public PageResult<ProductProcessMaterialVO> getProcessMaterialPageList(Integer page, Integer limit, String sort,
                                                                           String order, String skuCode, Long processId,String defaultMaterialSkuCode) {
        return null;
    }

    @Override
    public JsonResult<ProcessInfo> selectProcessInfoById(Long id) {
        return null;
    }

    @Override
    public JsonResult<List<ProcessInfo>> getAllProcessInfo() {
        return null;
    }

    @Override
    public JsonResult<OrderVO> getOrderById(Long id, String skuCode) {
        return null;
    }

    @Override
    public PageResult<OrderVO> getOrderPageList(Integer page, Integer limit, String sort, String order, String code, Order.Status status, Order.OrderSource orderSource, Order.OrderType orderType
    ,Integer whetherList) {
        return null;
    }

    @Override
    public JsonResult addProductSeries(ProductForm productForm) {
        return enterpriseClient.addProductSeries(productForm);
    }

    @Override
    public JsonResult isOnlyProductSeriesName(String name, Long id) {
        return enterpriseClient.isOnlyProductSeriesName(name,id);
    }

    @Override
    public JsonResult<Product> getProductByName(String productName) {
        return enterpriseClient.getProductByName(productName);
    }

    @Override
    public PageResult<Product> foreignProductListAll(Integer page, Integer limit, String name, String productCode, String specCode) {
        return null;
    }

    @Override
    public JsonResult foreignProductDetail(Long id) {
        return null;
    }

    @Override
    public PageResult<ProductDetail> foreignProductInfoListAll(Integer page, Integer limit, String skuName, String skuCode, Long productId, String startTime, String endTime) {
        return null;
    }

    @Override
    public JsonResult foreignProductInfoDetail(Long id) {
        return null;
    }

    @Override
    public JsonResult<SystemOfficialInfo> getInfo() {
        return null;
    }

    @Override
    public JsonResult getProQualityProjectBy(Long bookId) {
        return null;
    }


    @Override
    public JsonResult addProduct(CustomerProductCatalogForm customerProductCatalogForm) {
        return enterpriseClient.addProduct(customerProductCatalogForm);
    }

    @Override
    public JsonResult addProductReview(ProductReviewAddForm productReviewAddForm) {

        return enterpriseClient.addProductReview(productReviewAddForm);
    }

    @Override
    public JsonResult getOutProductId(String code) {
        return enterpriseClient.getOutProductId(code);
    }

    @Override
    public List<ResBenchmarkBookEchnology> getProcessInfoBy(Long bookId) {
        return enterpriseClient.getProcessInfoBy(bookId);
    }

    @Override
    public ResBenchmarkBookEchnology getProcessInfoByProcessId(Long processId) {
        return enterpriseClient.getProcessInfoByProcessId(processId);
    }

    @Override
    public List<OrderSkuDetailSearchVo> getFinishDetailBy(Long orderId) {
        return enterpriseClient.getFinishDetailBy(orderId);
    }

    @Override
    public List<OrderSkuDetailSearchVo> getOrderDetailBy(Long orderId) {
        return enterpriseClient.getOrderDetailBy(orderId);
    }

    @Override
    public List<ResBenchmarkBookEchnologyQuality> getQualityInfoBy(Long bookId, Long processId) {
        return enterpriseClient.getQualityInfoBy(bookId,processId);
    }

    @Override
    public JsonResult updatePalletBoxSkuIterm(PalletBoxSkuItermForm palletBoxSkuItermForm) {
        return enterpriseClient.updatePalletBoxSkuIterm(palletBoxSkuItermForm);
    }

    @Override
    public JsonResult<ReceiptRecord> saveReceiptRecord(ReceiptRecord receiptRecord) {
        return enterpriseClient.saveReceiptRecord(receiptRecord);
    }

    @Override
    public JsonResult saveReceiptRecordDetail(List<ReceiptRecordDetail> receiptRecordDetails) {
        return enterpriseClient.saveReceiptRecordDetail(receiptRecordDetails);
    }
}
